/**
 * Copyright(c) 2014 Xunton Solutions
 *
 * History:
 *   15-1-14 上午10:12 Created by dwzhang
 */
package com.jade.modules.software;

import java.util.List;

import com.jade.framework.base.context.ApplicationContextUtils;
import com.jade.framework.base.criterion.Criteria;
import com.jade.framework.base.util.PagingList;

/**
 * 软件包工具类。
 *
 * @author <a href="mailto:dwzhang@xunton.com">dwzhang</a> 
 * @version 1.0 15-1-14 上午10:12
 */
public class SoftwareUtils
{
    protected static SoftwareManager softwareManager;

    public static SoftwareManager getSoftwareManager()
    {
        if (softwareManager == null) {
            softwareManager = ApplicationContextUtils.getBean("module_softwareManager");
        }
        return softwareManager;
    }

    /**
     * 创建软件包。
     *
     * @param software 软件包信息。
     * @throws SoftwareException 处理异常。
     */
    public static void addSoftware(Software software)
            throws SoftwareException
    {
        getSoftwareManager().addSoftware(software);
    }

    /**
     * 更新软件包.
     *
     * @param software 软件信息。
     * @throws SoftwareException 处理异常
     */
    public static void updateSoftware(Software software)
            throws SoftwareException
    {
        getSoftwareManager().updateSoftware(software);
    }

    /**
     * 删除软件包。
     *
     * @param ids 软件标识
     * @throws SoftwareException 处理异常。
     */
    public static void removeSoftware(long... ids)
            throws SoftwareException
    {
        getSoftwareManager().removeSoftware(ids);
    }

    /**
     *  获取软件详细信息。
     *
     * @param id 软件标识
     * @return 软件信息对象
     */
    public static Software getSoftware(long id)
    {
        return getSoftwareManager().getSoftware(id);
    }

    /**
     * 获取一种类型的最新版本软件包。
     *
     * @param type 软件类型
     * @return 最新版本的软件信息对象。
     */
    public static Software getNewestSoftware(String type)
    {
        return getSoftwareManager().getNewestSoftware(type);
    }

    /**
     * 根据条件列出软件。
     *
     * @param criteria 查询条件
     * @return 软件列表
     */
    public static List<Software> listSoftware(Criteria criteria)
    {
        return getSoftwareManager().listSoftware(criteria);
    }

    /**
     * 根据条件分页列出软件。
     *
     * @param criteria 查询条件
     * @return 软件列表。
     */
    public static PagingList<Software> querySoftware(Criteria criteria)
    {
        return getSoftwareManager().querySoftware(criteria);
    }
}
